今天來聊聊筆者 P2V 虛擬化的經驗好了,我在 IC 封測廠救火的日子。
好的 Infrastructure Administrator 真的很難找,因為工作特性與其他 IT 職務不一樣,並沒有辦法規畫一套有效的培訓方式來進行養成。
如果有人問我如何培養好的 Infrastructure Administrator?
不要懷疑真的是這樣,因為你每天遇到的問題永遠不一樣。
光是硬體故障來說,筆者統計每季平均都 10 件以上。
各種廠牌的 Server 與 Stroage 故障次數,該死的 Dell PE R7X。
各種不同的故障類型的統計
由於筆者任職期間公司營運不佳,需要處理的設備幾乎的是過保的。
只有核心系統才會買硬體保固,最好下班去附近的土地公廟拜拜一下。
不行,這工作實在是太雷了,必須對高風險伺服器進行汰舊。
於是筆者就便提出了改善,針對超過十年以上之高風險伺服器進行汰舊,避免因硬體故障無法救援,造成資料損毀之風險。
執行步驟如下:
藉由這一次的專案進行大量的 P2V ,同時也把 Hyper-V 與 Xen-Server 的 VM 進行 V2V,把公司的虛擬化平台統一為 VMware vSphere。
Linux P2V 虛擬化
由於 Windows 的 P2V 沒有甚麼技術含金量,在此就不多做少紹。
Linux 的 P2V 就非常吃人品了,運氣好的轉完就開起來了,運氣不好的毛病一大堆。
筆者就挑一件比較特別的案例跟大家分享:
第一件事情,想當然耳,管理員你他媽趕快給我做資料庫備份阿。
MegaCli
由於無法透過 iDRAC 來確認 RAID 的狀態,我們需要在 Linux 上安裝 MegaCli 來直接查詢 RAID。
下載 MegaCLI 2.x 版,請至 LSI Corporation 下載 2.00.12_Linux_Cli.zip
wget http://www.lsi.com/DistributionSystem/AssetDocument/support/downloads/megaraid/miscellaneous/linux/2.00.12_Linux_Cli.zip
解壓縮 2.00.12_Linux_Cli.zip
unzip 2.00.12_Linux_Cli.zip
Archive: 2.00.12_Linux_Cli.zip
extracting: MegaCliLin.zip
inflating: 2.00.12_Linux_Cli.txt
解壓縮 MegaCliLin.zip
unzip MegaCliLin.zip
Archive: MegaCliLin.zip
inflating: MegaCli-2.00.12-1.i386.rpm
安裝 MegaCli RPM
rpm -ivh MegaCli-2.00.12-1.i386.rpm
Preparing... ################################## [100%]
1:MegaCli ################################## [100%]
在開始使用 MegaCli 之前有些名詞我們必須先了解
查看 RAID 狀態指令
#查看 Raid Card 型號、Disk 相關資訊
/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL
#關於 Raid Card 功能詳細內容
/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL
可透過下面的 Script 查看 VD 及 PD 的狀態
#!/bin/sh
#$Id: check_perc5i.sh, v0.2 2008/4/15 weithenn Exp $
#Check RAID Card PERC 5/i VD and PD State
#CentOS 32 bit use command MegaCli
#CentOS 64 bit use command MegaCli64
HOSTNAME=`/bin/hostname`
CARD=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL |grep "Product Name" | cut -d ':' -f2`
VDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "State"`
VDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Degraded"`
VDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep " Offline"`
PDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Online" | wc -l | sed 's/ //'`
PDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Rebuild" | wc -l | sed 's/ //'`
PDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Critical Disks"`
PDSTATE4=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Failed Disks"`
echo "##### Host Informationi #####"
echo "Host : $HOSTNAME"
echo "Raid Card :$CARD"
echo ""
echo "##### Virtual Disk State #####"
echo "Virtual Disk $VDSTATE1"
echo "$VDSTATE2"
echo "$VDSTATE3"
echo ""
echo "##### Physical Disk State #####"
echo "Online Disk : $PDSTATE1"
echo "Rebuild Disk : $PDSTATE2"
echo "$PDSTATE3"
echo "$PDSTATE4"
可看到 VD 狀態為 Degraded
./check_perc5i.sh
##### Host Informationi #####
Host : your_hostname
Raid Card : PERC 6/i Integrated
##### Virtual Disk State #####
Virtual Disk State : Degraded
Foreign State: None
State : Optimal
Foreign State: None
Foreign State: None
Foreign State: None
Foreign State: None
Degraded : 1
Offline : 0
##### Physical Disk State #####
Online Disk : 5
Rebuild Disk : 0
Critical Disks : 0
Failed Disks : 0
Auto Rebuild 是有啟動的,但卡在 30% 好幾天了。
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL | grep Rebuild
Rebuild Rate : 30%
Auto Rebuild : Enabled
Rebuild Rate : Yes
Force Rebuild : Yes
Linux Hot P2V
由於是重要報表伺服器無法重開,必須進行不停機轉換。先使用 Hot P2V 評估可行性與試轉作業,確認轉換所需時間與風險。
vCenter Converter 在轉換過程中會部署一台 Helper VM
Helper VM 會透過 SSH,並開始從來源檢索所選資料。
轉換之前確認作業系統資訊
ls -l /etc/*-release
-rw-r--r-- 1 root root 64 Jul 26 2011 /etc/enterprise-release
-rw-r--r-- 1 root root 32 Jul 26 2011 /etc/oracle-release
-rw-r--r-- 1 root root 54 Jul 26 2011 /etc/redhat-release
查看發行版本,想辦法取得相同版本的安裝映像。
cat /etc/oracle-release
Oracle Linux Server release 5.7
查看 Kernel 版本
uname -a
Linux your_hostname 2.6.32-200.13.1.el5uek #1 SMP Wed Jul 27 21:02:33 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
vCenter Converter
點選 Convert Machine
填入欲轉換 Linux 的 IP 與 root 帳號密碼
填入想要 P2V 到哪一台 ESXi 的 IP 與 root 帳號密碼
根據自己的 ESXi 版本調整 Virtual Machine Version
編輯 Data to Copy
硬碟要確定是 Maintain Size
Disk Controller 選擇 SCSI LSI Logic
不要勾選 Reconfigue Destination Virtual Machine
指派 Helper VM 使用的 IP 與 DNS
按下 Finish 之後,等待轉換完成。
Performing Post-Converter Activities
轉換完不要急著開機先做一次快照,因為不知道接下來會發生甚麼事。
進行開機,噴出 Error loading operation system。
主要原因為轉換後的 GRUB 未正確寫入開機磁碟,需要透過同版本的 Linux 光碟進入 Rescue Mode 來修復。
強制執行 BIOS 設定
進 BIOS 更改開機順序
光碟開機後,透過 F5-Rescue 來修復系統。
輸入 linux rescue 進入修復模式
選擇 English 語言
選擇 US 鍵盤語系
只是救援修復用,所以停用網卡。
選擇 Continue
原系統已掛載在 /mnt/sysimage 底下,我們就可以接著進行修復,重新安裝 GRUB。
先用 fdisk -l 確認一下開機硬碟
順序是 /dev/sda1 第一顆硬碟,透過以下指令將 GRUB 重新安裝在第一顆硬碟。
chroot /mnt/sysimage
grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
然後進行重開機,噴出 Unable to access resume device (LABEL=SWAP-sda2)。
同樣進入救援模式,先用 fdisk -l 確認一下 SWAP 是 /dev/sda2 沒錯。
再透過 blkid 取得硬碟 UUID 資訊
重新建立 SWAP 分區標籤,透過以下指令重建標籤。
swapoff -a
mkswap -c -L SWAP-sda2 /dev/sda2
再次檢查硬碟資訊
檢查檔案系統表,確認 SWAP 是否有誤植的部分,進行修改。
再次重開機然仍失敗,懷疑可能是Kernel 或 RAM Disk 的問題。
BIOS 與 Boot Loader 及 Kernel 載入流程示意圖
檢查導引程序組態,透過以下指令查看。
cat /boot/grub.conf
透過以下指令備份與初始化 RAM Disk
cd /boot
mv initrd-2.6.32-200.13.1.el5uek.img initrd-2.6.32-200.13.1.el5uek.img.old
/sbin/mkinitrd -v /boot/initrd-2.6.32-200.13.1.el5uek.img 2.6.32-200.13.1.el5uek
該版本核心缺少 ehci-hcd 驅動 (USB 2.0 協定的晶片)
還原文件
mv initrd-2.6.32-200.13.1.el5uek.img.old initrd-2.6.32-200.13.1.el5uek.img
嘗試使用較舊的 2.6.18–274.el5xen 版本初始化看看
透過以下指令備份與初始化 RAM Disk
cd /boot
mv initrd-2.6.18-274.el5xen.img initrd-2.6.18-274.el5xen.img.old
/sbin/mkinitrd -v /boot/initrd-2.6.18-274.el5xen.img 2.6.18-274.el5xen
修改導引程序組態,並重新開機,透過以下指令修改並把 default = 0。
vi /boot/grub.conf
這次終於開機成功,未使用的網路卡會造成開機緩慢,稍後將其移除。
圖型化界面啟動失敗
查看相關錯誤資訊
再次詢問是否查看錯誤資訊
選擇重新調配圖形化介面設定
輸入 root 密碼進行設定
直接點選 OK 即可
重新啟動圖形化介面
P2V 順利完成
重新啟用與設定網卡相關資訊
啟用正確的網卡,並移除錯誤的網卡。
修正 DNS 與本機 Hosts 指向
在完成試轉作業後還需要協同系統負責人確認試轉環境是否可用,以及協調停機時間進行切換作業。
再將停機前的 Oracle Dump 進行 Import 並將 VM 快照移除,整個 Linux 的 P2V 才算完成喔。
完工的照片如下,總計 P2V 機架式伺服器共 49 台。
今天的分享就到這邊,若有遇到相同狀況的朋友不妨參考看看。
參考文件